//TODO - Utilizar padrão proxy

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package game_logic;

/**
 *
 * @author Danilo
 */
class SquareR implements Square {

    private Pawn pawn;
    private boolean isStart;
    private Color color;
    private int position;

    /**
     * Construtor da classe.
     *
     * @param position A posição da casa no tabuleiro.
     */
    public SquareR(int position) {
        isStart = false;
        color = Color.WHITE;
        this.position = position;
        pawn = null;
    }


    public boolean isOccupied(){
        return pawn != null;
    }

   /**
    *
    * @return A referência para o peão que ocupa a casa, caso exista algum.
    */
    public Pawn getPawn() {
        return pawn;
    }

    /**
     * Coloca um peão para ocupar esta casa.
     *
     * @param pawn O peão a ser colocado.
     */
    public void setPawn(Pawn pawn) {
        this.pawn = pawn;
    }

    /**
     * 
     */
    public boolean isIsStart() {
        return isStart;
    }

    /**
     * 
     */
    public void setIsStart(boolean isStart) {
        this.isStart = isStart;
    }

    /**
     * 
     */
    public Color getColor() {
        return color;
    }

    /**
     * 
     */
    public void setColor(Color color) {
        this.color = color;
    }

    /**
     * @return A posição da casa no tabuleiro.
     */
    public int getPosition() {
        return position;
    }

    /**
     * Retorna uma representação em string da casa.
     *
     * Imprime cada casa com o seguinte padrão:
     * - * indica que tem peão na casa
     * - S indica que é uma casa inicial de alguma cor
     * - F indica que é uma casa final de alguma cor
     * - B,G,Y,R diz a cor da casa, se for inicial ou final
     *
     * @return Uma representação em string da casa.
     */
    @Override
    public String toString() {
        String s = (pawn == null) ? " " : "*";
        if (isStart) {
            s += "S-";
        }
        
        switch( color ){
            case BLUE:
                s += "B";
                break;
            case GREEN:
                s += "G";
                break;
            case RED:
                s += "R";
                break;
            case YELLOW:
                s += "Y";
                break;
        }
        
        return "|" + s;
    }
    


}
